home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games: 500 MB Amiga Software / 500 MB Amiga Software - Euber 130 - Amiga Games Disc & Mag.iso / userbox / publicdomain / tinymeter / source / tinymeter_main / formattext.c < prev    next >
C/C++ Source or Header  |  1995-09-13  |  5KB  |  137 lines

  1. #include <exec/types.h>
  2. #include <exec/memory.h>
  3.  
  4. extern struct Library        *RetinaBase;
  5.  
  6. char *formattext(ULONG num, ULONG basemem, ULONG allmem, char format[])
  7. {
  8.     int     i=0,
  9.             j=0;
  10.     char    temp_str_1[64];
  11.     static char temp_str[256];
  12.  
  13.     while(format[i]!=0)
  14.     {
  15.         if(format[i]=='%')
  16.         {
  17.             ULONG   dummy=0;
  18.             UBYTE   dummy_2=0,
  19.                     dummy_1=0,
  20.                     dummy_3=0;
  21.             i++;
  22.             if(format[i]=='t'){dummy_2=1;i++;}
  23.             if(format[i]=='T'){dummy_2=4;i++;}
  24.             if(format[i]=='k'){dummy_1=1;i++;}
  25.             if(format[i]=='m'){dummy_1=2;i++;}
  26.             if(format[i]=='o'){dummy_3=1;i++;}
  27.             if(format[i]=='%'){dummy_2=3;i++;}
  28.             switch(format[i])
  29.             {
  30.                 case    'd':
  31.                         dummy=num; i++;
  32.                         break;
  33.                 case    'b':
  34.                         dummy=basemem; i++;
  35.                         break;
  36.                 case    'a':
  37.                         dummy=allmem; i++;
  38.                         break;
  39.                 case    'p':
  40.                         dummy_2=2; dummy=num; i++;
  41.                         break;
  42.             }
  43.             if(dummy_3==1)dummy=allmem-dummy;
  44.             if(dummy_1==1)dummy=dummy>>10;
  45.             if(dummy_1==2)dummy=dummy>>20;
  46.             switch(dummy_2)
  47.             {
  48.                 case    4:
  49.                         dummy_2=long_2_string_with_thousand(dummy,&temp_str_1[0],'.');
  50.                         for(dummy_1=0;dummy_1<dummy_2;dummy_1++) temp_str[j++]=temp_str_1[dummy_1];
  51.                         break;
  52.                 case    1:
  53.                         dummy_2=long_2_string_with_thousand(dummy,&temp_str_1[0],',');
  54.                         for(dummy_1=0;dummy_1<dummy_2;dummy_1++) temp_str[j++]=temp_str_1[dummy_1];
  55.                         break;
  56.                 case    2:
  57.                         dummy_2=0;
  58.                         sprintf_exec(&temp_str_1[0],"%ld",(((dummy>>8)*100)/((allmem>>8)+1)) );
  59.                         while ((temp_str_1[dummy_2] != 0)&(dummy_2<64)) temp_str[j++]=temp_str_1[dummy_2++];
  60.                         break;
  61.                 case    0:
  62.                         dummy_2=0;
  63.                         sprintf_exec(&temp_str_1[0],"%ld",dummy);
  64.                         while ((temp_str_1[dummy_2] != 0)&(dummy_2<64)) temp_str[j++]=temp_str_1[dummy_2++];
  65.                         break;
  66.                 case    3:
  67.                         temp_str[j++]='%';
  68.                         break;
  69.             }
  70.         }
  71.         else temp_str[j++]=format[i++];
  72.     }
  73.     temp_str[j++]=0;
  74.     return(temp_str);
  75. }
  76.  
  77.  
  78. char *formatinfotext(char format[])
  79. {
  80.     int     i=0,j=0;
  81.     char    temp_str_1[14];
  82.     static  char temp_str[256];
  83.  
  84.     while(format[i]!=0)
  85.     {
  86.         if(format[i]=='%')
  87.         {
  88.             ULONG   dummy=0,
  89.                     dummy_1=0;
  90.             UBYTE   dummy_2=0;
  91.             WORD    dummy_3=0;
  92.             i++;
  93.             if(format[i]=='t'){dummy_3=1;i++;};
  94.             if(format[i]=='T'){dummy_3=2;i++;};
  95.             if(format[i]=='k'){dummy_2=TRUE;i++;};
  96.             if(format[i]=='l'){dummy_1=MEMF_LARGEST;i++;};
  97.             if(format[i]=='a'){dummy_1=MEMF_TOTAL;i++;};
  98.             switch(format[i])
  99.             {
  100.                 case    'o':
  101.                         dummy=AvailMem(dummy_1); i++;
  102.                         break;
  103.                 case    'c':
  104.                         dummy=AvailMem(MEMF_CHIP|dummy_1); i++;
  105.                         break;
  106.                 case    'f':
  107.                         dummy=AvailMem(MEMF_FAST|dummy_1); i++;
  108.                         break;
  109.                 case    'r':
  110.                         if(RetinaBase)dummy=Retina_AvailMem(dummy_1); i++;
  111.                         break;
  112.             }
  113.             if(dummy_2)dummy=dummy>>10;
  114.             switch(dummy_3)
  115.             {
  116.                 case    1:
  117.                         dummy_2=long_2_string_with_thousand(dummy,&temp_str_1[0],',');
  118.                         for(dummy_1=0;dummy_1<dummy_2;dummy_1++) temp_str[j++]=temp_str_1[dummy_1];
  119.                         break;
  120.                 case    2:
  121.                         dummy_2=long_2_string_with_thousand(dummy,&temp_str_1[0],'.');
  122.                         for(dummy_1=0;dummy_1<dummy_2;dummy_1++) temp_str[j++]=temp_str_1[dummy_1];
  123.                         break;
  124.                 default :
  125.                         dummy_1=0;
  126.                         sprintf_exec(&temp_str_1[0],"%ld",dummy);
  127.                         while (temp_str_1[dummy_1] != '\0') temp_str[j++]=temp_str_1[dummy_1++];
  128.                         break;
  129.             }
  130.         }
  131.         else temp_str[j++]=format[i++];
  132.     }
  133.     temp_str[j++]=0;
  134.     return(temp_str);
  135. }
  136.  
  137.